package com.mdd.admin.service;

import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.competition.CompetitionApplyExamineValidate;
import com.mdd.admin.validate.team.TeamCreateValidate;
import com.mdd.admin.validate.team.TeamSearchValidate;
import com.mdd.admin.validate.team.TeamUpdateValidate;
import com.mdd.admin.vo.team.TeamDetailVo;
import com.mdd.admin.vo.team.TeamListedVo;
import com.mdd.common.core.PageResult;

/**
 * 社团服务接口类
 * @author LikeAdmin
 */
public interface ITeamService {

    /**
     * 社团列表
     *
     * @author LikeAdmin
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<TeamListedVo>
     */
    PageResult<TeamListedVo> list(PageValidate pageValidate, TeamSearchValidate searchValidate);

    /**
     * 社团详情
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return TeamDetailVo
     */
    TeamDetailVo detail(Integer id);

    /**
     * 社团新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(TeamCreateValidate createValidate);

    /**
     * 社团编辑
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(TeamUpdateValidate updateValidate);

    /**
     * 社团删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Integer id);

    void examine(CompetitionApplyExamineValidate updateValidate);

}
